# 使用wildcard在./src目录下查找所有的.c文件并产生文件列表
SRC += $(wildcard ./src/*.c)

# 把SRC变量中的所有的.c 替换为 .o并作为　当前OBJ变量的值
OBJ += $(SRC:%.c=%.o) 
override CFLAG += -I./inc  -L./lib -ldir
TAG = bin/main

# 指定编译器
CC = gcc

$(TAG): $(OBJ)
	@echo "SRC:" $(SRC)
	$(CC) -o $@ $^ $(CFLAG)
#  $^ 表示所有的依赖文件
#  $@ 表示目标文件


#静态规则
# 提供了一套通用的把%.c 变成 %.o的规则
# 可以用来适配隐式规则无法定制的问题
$(OBJ):%.o:%.c  
	$(CC) -o $@ $^  -c $(CFLAG)
#  $^ 表示所有的依赖文件
#  $@ 表示目标文件
#  %.o:%.c  表示所有的.o文件都依赖于同名的.c文件

clean:
	rm -rf $(OBJ) $(TAG)

# 告诉Make工程管理器，clean不是一个文件名，而是一个伪目标（不需要判断时间戳或是否存在他必须执行）
.PHONY:clean